package com.jhy.new2025.BinaryTree;

/**
 * 完全二叉树的节点个数
 */

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * 给你一棵 完全二叉树 的根节点 root ，求出该树的节点个数。
 */
public class CountNodes {

    public int countNodes(TreeNode root) {
        // 层序遍历
        if(root == null) return 0;
        Deque<TreeNode> deque = new ArrayDeque<>();
        deque.offer(root);
        int count = 0;
        while (!deque.isEmpty()) {
            int size = deque.size();
            while (size > 0) {
                // 这里算的每一个节点
                TreeNode poll = deque.poll();
                if (poll.left != null) deque.offer(poll.left);
                if (poll.right != null) deque.offer(poll.right);
                count++;
                size--;
            }
        }
        return count;
    }
}
